package com.woniu.factorys;

import com.woniuxy.entity.Person;
import com.woniuxy.test.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * @Author: 马宇航
 * @Do: 读取配置文件的时候`不创建对象`，在用的时候创建！
 * @DateTime: 22/08/17/0017 15:46
 * @Component: 成都蜗牛学苑
 **/
public class MyBeanFactory {
    //在读取配置文件后，我需要存储文件中的全限定类名
    private static Map<String,String> map = new HashMap();
    /**
     * 读取配置文件
     * ChangeLog : 1. 创建 (22/08/17/0017 15:47 [马宇航]);
     *
     * @return com.woniuxy.entity.Person
    */
    static{
        //怎么读取配置文件？
        Properties properties = new Properties();
        //需要一个输入流
        InputStream inputStream = Test.class.getResourceAsStream("../test/person.properties");
        Person person = null;
        try {
            properties.load(inputStream);
            //获取了所有的key？还是value
            Set<String> keys = properties.stringPropertyNames();
            for (String name:keys) {
                String property = properties.getProperty(name);
                map.put(name,property);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public  Object getBean(String name){
        //只是获取的全限定类名
        String value = map.get(name);
        try {
            return Class.forName(value).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}
